package javase.homework;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;

/**
 * **2. 实现一个 MapSum 类，支持两个方法，insert 和 sum：**
 *
 * **MapSum() 初始化 MapSum 对象**
 * **void insert(String key, int val) 插入 key-val 键值对，字符串表示键 key ，整数表示值 val 。如果键 key 已经存在，那么原来的键值对将被替代成新的键值对。**
 * **int sum(string prefix) 返回所有以该前缀 prefix 开头的键 key 的值的总和。**
 */
class MapSum {
    //定义一个静态Map
    Map<String,Integer> map;

    /** Initialize your data structure here. */
    public MapSum() {
        map = new HashMap<>();
    }

    /**
     * **void insert(String key, int val) 插入 key-val 键值对，字符串表示键 key ，整数表示值 val 。如果键 key 已经存在，那么原来的键值对将被替代成新的键值对。**
     * @param key
     * @param val
     */
    public void insert(String key, int val) {
        //向map存入数据
        map.put(key,val);
    }

    /**
     * **int sum(string prefix) 返回所有以该前缀 prefix 开头的键 key 的值的总和。**
     * @param prefix
     * @return
     */
    public int sum(String prefix) {
        //获取map所有的键
        Set<String> set = map.keySet();
        int sum = 0;
        //依次去遍历键值对数据
        for (String s : set) {
            sum+=map.get(s);
        }
        return sum;
    }
}

class Test{
    public static void main(String[] args) {
        MapSum mapSum = new MapSum();
        mapSum.insert("apple", 3);
        System.out.println(mapSum.sum("ap"));           // return 3 (apple = 3)
        mapSum.insert("app", 2);
        System.out.println(mapSum.sum("ap"));           // return 5 (apple + app = 3 + 2 = 5)
        mapSum.insert("apple", 2);
        System.out.println(mapSum.sum("ap"));           // return 5 (apple + app = 2 + 2 = 4)
    }
}